11650번 좌표 정렬하기
Day 13 13단계 20231107
- 2차원 배열의 정렬은 Arrays.sort(array, Comparator)를 사용하면 원하는 기준으로 정렬할 수 있다.
- 문제에선 먼저 x 좌표를 오름차순, x 좌표가 같다면 y 좌표를 오름차순으로 정렬해야 한다.
- Comparator의 람다식을 x 좌표의 비교를 먼저 진행해서 양수가 나오면 오름차순으로 순서 변경, 0이거나 음수면 변경 없는 상태로 만든다.
- x 좌표가 같으면 y 좌표에 대해서도 똑같이 비교해서 양수면 배열 순서를 바꾸고, 0이거나 음수면 순서를 바꾸지 않는다.
- Arrays 클래스, 함수형 인터페이스
- https://onejunu.tistory.com/53
- https://stackoverflow.com/questions/15452429/java-arrays-sort-2d-array
- https://zara49.tistory.com/149
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int[][] coord = new int[n][2];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
coord[i][0] = Integer.parseInt(st.nextToken());
coord[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(coord, (a, b) -> {
if(a[0] != b[0]) { return a[0] - b[0]; }
else if (a[1] != b[1]) { return a[1] - b[1]; }
return a[0] - b[0];
});
for (int[] arr : coord) {
sb.append(arr[0] + " " + arr[1] + "\n");
}
System.out.println(sb.toString());
bw.flush();
bw.close();
br.close();
}
}